home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / tex / td187src.lzh / MAGICSYS.D < prev    next >
Text File  |  1991-06-08  |  5KB  |  157 lines

  1. (*######################################################################
  2.  
  3.   MAGIC         Modula's  All purpose  GEM  Interface  Cadre
  4.                 ¯         ¯            ¯    ¯          ¯
  5. ########################################################################
  6.  
  7.   MagicSYS      Ein Versuch, Compilerabhängige Dinge zu vereinheitlichen
  8.  
  9. ########################################################################
  10.   V2.00  26.10.90  Peter Hellinger
  11.                    Mit dem kommenden ISO-Standard werden auch Änderungen
  12.                    betreffend der Größe der einzelnen Typen gültig werden.
  13.                    Um diesen Umstand Rechung zu tragen, und vor allem
  14.                    weil die verschiedenen Compiler auch unterschiedliche
  15.                    Typen - und Größen - zur Verfügung stellen wurden für
  16.                    MAGIC einheitliche Typen festgelegt.
  17.   V1.00  (C) by    Peter Hellinger
  18. ######################################################################*)
  19.  
  20. DEFINITION MODULE MagicSys;
  21.  
  22. FROM SYSTEM IMPORT BYTE, WORD, ADDRESS, LONGWORD;
  23. (* LPR/SPC: *) (* FROM SYSTEM IMPORT LONG; *)
  24.  
  25.  
  26. (* eine besonders ärgerliche Sache: NIL ist nicht gleich NIL!  Bei einigen
  27.  * Systemen ist NIL als -1, bei anderen als 0 implementiert.
  28.  * MagicSys exportiert deshalb eine Konstante "Nil", die den Wert LONG(-1) 
  29.  * hat, und eine Konstante "Null", die gleich LONG(0) ist.
  30.  *
  31.  * Bitte informieren Sie sich, welche Lösung ihr System anbietet, bzw. 
  32.  * auch, welche Prozeduren NIL und welche NULL liefern.
  33.  *)
  34.  
  35. CONST   Nil =   0FFFFFFFFH;
  36.         Null =  000000000H;
  37.  
  38.  
  39.  
  40. (* Bits im Bitset für TDI, LPR, SPC und MM2 ab Version 4.05ß *)
  41.  
  42. CONST   Bit0 =   0;
  43.         Bit1 =   1;
  44.         Bit2 =   2;
  45.         Bit3 =   3;
  46.         Bit4 =   4;
  47.         Bit5 =   5;
  48.         Bit6 =   6;
  49.         Bit7 =   7;
  50.         Bit8 =   8;
  51.         Bit9 =   9;
  52.         Bit10 = 10;
  53.         Bit11 = 11;
  54.         Bit12 = 12;
  55.         Bit13 = 13;
  56.         Bit14 = 14;
  57.         Bit15 = 15;
  58.  
  59. (* Bits im Bitset für MM2 vor Compilerversion 4.05ß *)
  60. (*
  61. CONST   Bit0 =   8;
  62.         Bit1 =   9;
  63.         Bit2 =  10;
  64.         Bit3 =  11;
  65.         Bit4 =  12;
  66.         Bit5 =  13;
  67.         Bit6 =  14;
  68.         Bit7 =  15;
  69.         Bit8 =   0;
  70.         Bit9 =   1;
  71.         Bit10 =  2;
  72.         Bit11 =  3;
  73.         Bit12 =  4;
  74.         Bit13 =  5;
  75.         Bit14 =  6;
  76.         Bit15 =  7;
  77. *)
  78.  
  79.  
  80. (* Nach dem neuen ISO-Standard wird es einen neuen Typ Namens LOC geben, der
  81.  * die kleinste adressierbare Speichereinheit darstellt.  Ein ARRAY OF WORD
  82.  * wird dann nach ISO ARRAY OF LOC heißen.  Der ARRAY OF WORD beruht im übrigen
  83.  * auf einem Mißverständniss, da auf der Lilith (der Rechner, auf dem Wirth 
  84.  * Modula-2 entwickelt hat) die kleinste adressierbare Einheit eben ein WORD ist.
  85.  * Bei den Rechnern der 68xxx Serie ist das aber anders.  Deshalb ist die 
  86.  * Entscheidung des ISO-Ausschusses durchaus vernünftig und gerechtfertigt.
  87.  *
  88.  * Mit Version 2.0 unterstützt auch MAGIC und alle davon abhängigen Bibliotheken
  89.  * dieses Konzept.
  90.  *)
  91.  
  92. TYPE    LOC =   BYTE;   (* Kann entfernt werden, sobald Ihr Compiler den
  93.                          * Typ LOC zur Verfügung stellt
  94.                          *)
  95.  
  96. (* 8-Bit Typen *)
  97.  
  98. (* Es wird davon ausgegangen, daß ein CHAR auch nach ISO weiterhin 8 Bit
  99.  * groß ist, und somit keine Kompatibilitätsprobleme auftreten.
  100.  *)
  101.  
  102. TYPE    Byte =          BYTE;
  103.         ByteSet =       SET OF [0..7];
  104.  
  105. (* 16-Bit Typen *)
  106.  
  107. TYPE    sWORD =         WORD;
  108.         sINTEGER =      INTEGER;
  109.         sCARDINAL =     CARDINAL;
  110.         sBITSET =       BITSET;
  111.  
  112.  
  113. (* 32-Bit Typen *)
  114. (* Achtung, LONGWORD und LONGBITSET gibts auf manchen Systemen nicht! *)
  115.  
  116. TYPE    lWORD =         LONGWORD;       (* ADDRESS ??? *)
  117.         lINTEGER =      LONGINT;
  118.         lCARDINAL =     LONGCARD;
  119.         lBITSET =       SET OF [0..31];
  120.  
  121.  
  122. (* Typ-Casting *)
  123.  
  124. PROCEDURE CastToChar    (value: ARRAY OF LOC): CHAR;
  125. PROCEDURE CastToByte    (value: ARRAY OF LOC): Byte;
  126. PROCEDURE CastToByteset (value: ARRAY OF LOC): ByteSet;
  127. PROCEDURE CastToInt     (value: ARRAY OF LOC): sINTEGER;
  128. PROCEDURE CastToCard    (value: ARRAY OF LOC): sCARDINAL;
  129. PROCEDURE CastToBitset  (value: ARRAY OF LOC): sBITSET;
  130. PROCEDURE CastToWord    (value: ARRAY OF LOC): sWORD;
  131. PROCEDURE CastToLInt    (value: ARRAY OF LOC): lINTEGER;
  132. PROCEDURE CastToLCard   (value: ARRAY OF LOC): lCARDINAL;
  133. PROCEDURE CastToLBitset (value: ARRAY OF LOC): lBITSET;
  134. PROCEDURE CastToLWord   (value: ARRAY OF LOC): lWORD;
  135. PROCEDURE CastToAddr    (value: ARRAY OF LOC): ADDRESS;
  136. (* Casten jeden beliebigen Typ auf den Ergebnistyp *)
  137.  
  138.  
  139. PROCEDURE Basepage (): ADDRESS;
  140. (* liefert die Adresse der Basepage *)
  141.  
  142. PROCEDURE Terminate (return: sINTEGER);
  143. (* Bendet ein Programm *)
  144.  
  145. PROCEDURE CallGEM (function: sINTEGER; parablock: ADDRESS);
  146. (* Ruft eine AES-Funktion auf *)
  147.  
  148. PROCEDURE VqGdos (): BOOLEAN;
  149. (* Testet ob ein GDOS geladen ist *)
  150.  
  151. PROCEDURE CatchD0 (): LONGCARD;
  152. (* Für einige VDI-Funktionen muß das D0-Register ausgewertet werden *)
  153.  
  154.  
  155. END MagicSys.
  156.  
  157.